package team.knowers.qzhserver.user.user.service;


import team.knowers.qzhserver.user.user.entity.dao.UserDO;
import team.knowers.qzhserver.user.user.entity.dto.UserRegisterParamDTO;
import team.knowers.qzhserver.user.user.entity.dto.UserUserDetails;
import team.knowers.qzhserver.user.user.entity.dto.UserUpdateDTO;
import team.knowers.qzhserver.user.userData.entity.dao.UserDataDO;

/**
 * @author xtg
 * @date 2024/2/11 22:04
 */
public interface UserService {
    /**
     * 用户登录，返回JWT token
     */
    String login(String username, String password);

    /**
     * 用户注册
     */
    UserDO register(UserRegisterParamDTO userParamDTO) throws Exception;

    /**
     * 用户注册成功时同步生成对应的用户数据信息
     */
    UserDataDO registerUserData(UserDO userDo);

    /**
     * 获取用户信息
     */
    UserUserDetails loadUserByUsername(String username);

    UserDO getUserByUsername(String username);

    UserCacheService getCacheService();

    UserUpdateDTO getUserUpdateDTOById(String id);

    boolean editUserEditable (String username,UserUpdateDTO userUpdateDTO);

    int setStatusUnable(String id);


    int setStatusAble(String id);

    /**
     *  查询用户状态
     * @param id
     * @return 用户状态，0为封禁，1为正常，-1为不存在
     */
    int userStatus(String id);

    /**
     * 通过用户名获取用户id
     */
    String getIdByUsername(String username);

    /**
     * 通过用户id获取用户名
     */

    String getUsernameById(String id);

    /**
     * 通过用户id获取用户对象
     * @param id    用户id
     * @return  用户对象
     */
    UserDO getUserById(String id);
}
